package com.frejoys.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.frejoys.common.dto.admin.AdminVerifyDto;
import com.frejoys.common.dto.admin.AdminVerifyListDto;
import com.frejoys.common.dto.admin.SubmitVerifyDto;
import com.frejoys.common.dto.app.StoreEnterUpdateStatusDto;
import com.frejoys.common.dto.common.PageDto;
import com.frejoys.common.vo.admin.*;
import com.frejoys.common.vo.app.VerifyActivityListVo;
import com.frejoys.common.vo.app.VerifyGoodsListVo;
import com.frejoys.common.vo.app.VerifyListVo;
import com.frejoys.common.vo.app.VerifyStoreListVo;
import com.frejoys.dao.entity.AdminVerify;

import java.util.List;

public interface AdminVerifyService extends IService<AdminVerify> {

    default AdminVerify getOnly(QueryWrapper<AdminVerify> wrapper) {
        wrapper.last("limit 1");
        return this.getOne(wrapper);
    }

    default AdminVerify getOnly(LambdaQueryWrapper<AdminVerify> wrapper) {
        wrapper.last("limit 1");
        return this.getOne(wrapper);
    }

    /**
     * 根据类型获取审核数据
     */
    Page<AdminVerify> getListByType(AdminVerifyListDto dto);

    /**
     * 提交上架审核
     */
    boolean submitVerify(SubmitVerifyDto dto);

    /**
     * 后台查询审核列表
     */
    List<AdminVerifyListVo> listInfo(AdminVerifyListDto dto,Long userId);

    /**
     * 后台审核申请-管理员审核
     */
    boolean adminVerify(AdminVerifyDto dto);


    //代理人审核
    Integer agentUpdateStatus(StoreEnterUpdateStatusDto dto);

    /**
     * 查询商家入驻审核列表
     */
    IPage<AdminVerifyStoreEnterListVo> listStoreEnterInfo(AdminVerifyListDto dto);

    /**
     * 查询店铺上架审核列表
     */
    IPage<AdminVerifyStoreListVo> listStoreInfo(AdminVerifyListDto dto);

    /**
     * 查询商品上架审核列表
     */
    IPage<AdminVerifyGoodsListVo> listGoodsInfo(AdminVerifyListDto dto);

    /**
     * 查询活动上架审核列表
     */
    IPage<AdminVerifyActivityListVo> listActivityInfo(AdminVerifyListDto dto);

    //代理人查询店铺上架审核列表
    List<VerifyStoreListVo> verifyStoreList(Long userId,PageDto dto);

    //代理人查询商品审核列表
    List<VerifyGoodsListVo> verifyGoodsList(Long userId, PageDto dto);

    //代理人查询活动审核列表
    List<VerifyActivityListVo> verifyActivityList(Long userId, PageDto dto);

    //修改状态
    Integer updateVerifyStatus(Integer commonId,Integer type,Integer status);

    //管理员查询审核列表
    List<VerifyListVo> verifyList(Long userId, PageDto dto);
}
